"""
1、按经验将不同的变量存储不同的类型的数据

2、验证这些数据到底是什么类型 -- 检测数据类型 -- type(数据)
"""

# int -- 整型
num1 = 1

# float -- 浮点型，就是小数
num2 = 1.1
print(type(num1))
print(type(num2))
print(0.1 + 0.2 == 0.3)  # False 由于精度问题

# decimal库
# float 最多精确到 15位————要想让小数更加精确————利用decimal库
import decimal
decimal1 = decimal.Decimal('3.141592653')
decimal2 = decimal.Decimal('1.234567891')  # 里面的字符串 只能用单引号‘’
decimal.getcontext().prec = 20  # 设置数据类型的 精确度
print(decimal1 + decimal2)

# e/E 的使用
# <a>e<b> == a * 10**b
print(4.3e-3)  # 0.0043

# 复数类型————虚数部分用j
real1 = (1.23e-4+5.67e+89j).real #取复数的 实数部分
imag1 = (1.23e-4+5.67e+89j).imag #取复数的 虚数部分

# str -- 字符串，特点：数据都要带引号
str1 = '人生苦短，我用Python'
str2 = "人生苦短，我用Python"
str3 = """人生苦短，
我用Python"""
str4 = '''人生苦短，
我用Python'''
print(str1, type(str1))
print(str2, type(str2))
print(str3, type(str3)) # 包括了换行
print(str4, type(str4)) # 包括了换行


# bool -- 布尔型，通常判断使用，布尔型有两个取值 True 和 False
b = True
print(type(b))

# 布尔值可以转成整数计算
print(True + 1)  # 2     1+1的结果为2  True表示1
print(False + 1)  # 1    0+1的结果为1  False表示0

# list -- 列表
c = [10, 20, 30]
print(type(c))

# tuple -- 元组
d = (10, 20, 30)
print(type(d))

# set -- 集合
e = {10, 20, 30}
print(type(e))

# dict -- 字典 -- 键值对
f = {'name': 'TOM', 'age': 18}
print(type(f))
